/*
 *   Copyright (C) Key Bridge Global LLC and/or its affiliates.
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.keybridgeglobal.wsif;

import com.keybridgeglobal.wsif.enumerated.EnumSecurityStrategy;
import com.keybridgeglobal.wsif.enumerated.EnumWsifClientSecurityStatus;
import java.util.Date;
import javax.xml.bind.annotation.*;

/**
 * <p>Java class for credential complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained
 * within this class.
 * <p/>
 * <
 * pre>
 * &lt;complexType name="credential">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="clientChallenge" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="clientSecurityStatus" type="{}enumWsifClientSecurityStatus"/>
 *       &lt;/sequence>
 *       &lt;attribute name="securityStrategy" use="required" type="{}enumSecurityStrategy" />
 *       &lt;attribute name="securityVersion" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="keyAlgorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="dateCreated" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *       &lt;attribute name="consumerKey" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="sharedSecret" type="{http://www.w3.org/2001/XMLSchema}string" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * <p/>
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "credential", propOrder = {
  "clientChallenge",
  "clientSecurityStatus"
})
@XmlRootElement
public class Credential {

  @XmlElement(required = true)
  protected String clientChallenge;
  @XmlElement(required = true)
  protected EnumWsifClientSecurityStatus clientSecurityStatus;
  @XmlAttribute(name = "securityStrategy", required = true)
  protected EnumSecurityStrategy securityStrategy;
  @XmlAttribute(name = "securityVersion", required = true)
  protected double securityVersion;
  @XmlAttribute(name = "keyAlgorithm", required = true)
  protected String keyAlgorithm;
  @XmlAttribute(name = "dateCreated", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dateCreated;
  @XmlAttribute(name = "consumerKey")
  protected String consumerKey;
  @XmlAttribute(name = "sharedSecret")
  protected String sharedSecret;

  /**
   * Gets the value of the clientChallenge property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getClientChallenge() {
    return clientChallenge;
  }

  /**
   * Sets the value of the clientChallenge property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setClientChallenge(String value) {
    this.clientChallenge = value;
  }

  /**
   * Gets the value of the clientSecurityStatus property.
   * <p/>
   * @return possible object is {@link EnumWsifClientSecurityStatus }
   *
   */
  public EnumWsifClientSecurityStatus getClientSecurityStatus() {
    return clientSecurityStatus;
  }

  /**
   * Sets the value of the clientSecurityStatus property.
   * <p/>
   * @param value allowed object is {@link EnumWsifClientSecurityStatus }
   *
   */
  public void setClientSecurityStatus(EnumWsifClientSecurityStatus value) {
    this.clientSecurityStatus = value;
  }

  /**
   * Gets the value of the securityStrategy property.
   * <p/>
   * @return possible object is {@link EnumSecurityStrategy }
   *
   */
  public EnumSecurityStrategy getSecurityStrategy() {
    return securityStrategy;
  }

  /**
   * Sets the value of the securityStrategy property.
   * <p/>
   * @param value allowed object is {@link EnumSecurityStrategy }
   *
   */
  public void setSecurityStrategy(EnumSecurityStrategy value) {
    this.securityStrategy = value;
  }

  /**
   * Gets the value of the securityVersion property.
   * <p/>
   */
  public double getSecurityVersion() {
    return securityVersion;
  }

  /**
   * Sets the value of the securityVersion property.
   * <p/>
   */
  public void setSecurityVersion(double value) {
    this.securityVersion = value;
  }

  /**
   * Gets the value of the keyAlgorithm property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getKeyAlgorithm() {
    return keyAlgorithm;
  }

  /**
   * Sets the value of the keyAlgorithm property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setKeyAlgorithm(String value) {
    this.keyAlgorithm = value;
  }

  /**
   * Gets the value of the dateCreated property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateCreated() {
    return dateCreated;
  }

  /**
   * Sets the value of the dateCreated property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateCreated(Date value) {
    this.dateCreated = value;
  }

  /**
   * Gets the value of the consumerKey property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getConsumerKey() {
    return consumerKey;
  }

  /**
   * Sets the value of the consumerKey property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setConsumerKey(String value) {
    this.consumerKey = value;
  }

  /**
   * Gets the value of the sharedSecret property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getSharedSecret() {
    return sharedSecret;
  }

  /**
   * Sets the value of the sharedSecret property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setSharedSecret(String value) {
    this.sharedSecret = value;
  }
}
